package com.repair.order;

import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.repair.datasource.entity.BaseEntity;

import java.util.Collections;


public class Generator {

    public static void main(String[] args) {
        String path = "E:\\Study\\repair-yixiu\\repair-service\\repair-order";
        // 使用 FastAutoGenerator 快速配置代码生成器
        // 执行这个先要建好模块 然后放到自己test下 执行
        // 改数据库  用户名 密码
        FastAutoGenerator.create("jdbc:mysql://8.136.125.59:3306/repair?serverTimezone=Asia/Shanghai", "root", "8899174")
                .globalConfig(builder -> {
                    builder.author("郑春雨") // 设置作者
                            .enableSwagger() // 开启 Swagger 模式
                            // 改成自己的路径
                            .outputDir(path + "/src/main/java"); // 输出目录
                })
                .packageConfig(builder -> {
                    builder.parent("com.repair.order") // 设置父包名
                            .entity("pojo.entity") // 设置实体类包名
                            .mapper("mapper") // 设置 Mapper 接口包名
                            .service("service") // 设置 Service 接口包名
                            .serviceImpl("service.impl") // 设置 Service 实现类包名
                            .pathInfo(Collections.singletonMap(OutputFile.xml, path + "/src/main/resources/mappers")) // 设置路径配置信息
                            .xml("mappers"); // 设置 Mapper XML 文件包名
                })
                .strategyConfig(builder -> {
                    builder.addInclude("order", "order_stream") // 设置需要生成的表名  如果多个表可以多个参数
                            .entityBuilder()
                            .enableFileOverride()
                            .superClass(BaseEntity.class)
                            .versionColumnName("version") // 乐观锁字段
                            .logicDeleteColumnName("deleted") //逻辑删除字段
                            .enableLombok() // 启用 Lombok
                            .enableTableFieldAnnotation() // 启用字段注解
                            .controllerBuilder()
                            .enableRestStyle(); // 启用 REST 风格
                })
                .templateEngine(new FreemarkerTemplateEngine()) // 使用 Freemarker 模板引擎
                .execute(); // 执行生成
    }

}
